package com.xzzz.common.base.util;

import java.util.regex.Pattern;

/**
 * 正则表达式的模式类型
 *
 * @author xzzz
 * 
 */
public class RegularExpUtil {
	/**
	 * 数字(浮点数 和 整数)  包含(0、0.0000)  不包含(-0、-0.0000)
	 */
	private final static Pattern NUMBER = Pattern.compile("^(-?([1-9]\\d*\\.?\\d*|0\\.\\d*[1-9]\\d*)|0\\.0+|0)$");

	/**
	 * 浮点数  不包含(-0、-0.0000)
	 */
	private final static Pattern FLOAT = Pattern.compile("^(-?([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*)|0\\.0+)$");

	/**
	 * 两位有效小数的正则校验 不包含(00.34)
	 */
	private final static Pattern TWO_DECIMAL_PLACES = Pattern.compile("^(([1-9]{1}\\d*)|(0{1}))(\\.\\d{2})$");

	/**
	 * 汉字
	 */
	private final static Pattern CHINESE_CHARACTERS = Pattern.compile("[\u4e00-\u9fa5]");

	/**
	 * 整数的正则表达式 支持0、1、100、-1、-100。不支持-0、-01、00、09
	 */
	public static final Pattern INTEGER_PATTERN = Pattern.compile("^(0|-?[1-9][0-9]*)$");

	/**
	 * 数字或者字母的正则表达式  ^(0?|[1-9]+[0-9]*)$  Numbers or letters
	 */
	public static final Pattern NUMBER_LETTER_PATTERN = Pattern.compile("^[0-9]*[a-zA-Z]*+$");

	/**
	 * 由大小写字母，数字，点和@符号组成的字符串模式
	 */
	private final static Pattern LETTER_NUMBER_UNDERLINE_SPOT_AT = Pattern.compile("^[A-Za-z0-9_.@]+$");

	/**
	 * 由数字、26个英文字母或者下划线组成的字符串模式
	 */
	private final static Pattern LETTER_NUMBER_UNDERLINE = Pattern.compile("^[A-Za-z0-9_]+$");

	/**
	 * Windows下文件名中的无效字符
	 */
	public static Pattern FILE_NAME_INVALID_PATTERN_WIN = Pattern.compile("[\\\\/:*?\"<>|]");

	/**
	 * 手机号码 ^1(3([0-35-9]\\d|4[1-8])|4[14-9]\\d|5([0-35689]\\d|7[1-79])|66\\d|7[2-35-8]\\d|8\\d{2}|9[13589]\\d)\\d{7}$
	 * 移动：134 135 136 137 138 139 147 150 151 152 157 158 159 178 182 183 184 187 188 198
	 * 联通：130 131 132 145 155 156 166 171 175 176 185 186
	 * 电信：133 149 153 173 177 180 181 189 199
	 * 虚拟运营商: 170
	 */
	public static final Pattern MOBILE_PATTERN = Pattern.compile("^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[13589])\\d{8}$");
}
